// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ImplicitUseKindFlags.cs" company="CSLib.Net Team">
//   Copyright (c) Roman "4ux-nbIx" Novitsky 2010
// </copyright>
// <summary>
//   Defines the ImplicitUseKindFlags type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace CSLib.Net.Annotations
{
  #region Namespace Imports

  using System;
  using System.Diagnostics.CodeAnalysis;

  #endregion


  /// <summary>
  /// Defines the kind of implicit use.
  /// </summary>
  [SuppressMessage("Microsoft.Naming", "CA1726:UsePreferredTerms", MessageId = "Flags", 
    Justification = "Not sure whether it is possible.")]
  [Flags]
  public enum ImplicitUseKindFlags
  {
    /// <summary>
    /// Indicates implicit assignment to a member, implicit instantiation of a type and an entity marked with attribute considered used.
    /// </summary>
    Default = Access | Assign | Instantiated, 

    /// <summary>
    /// Only entity marked with attribute considered used.
    /// </summary>
    Access = 1, 

    /// <summary>
    /// Indicates implicit assignment to a member.
    /// </summary>
    Assign = 2, 

    /// <summary>
    /// Indicates implicit instantiation of a type.
    /// </summary>
    Instantiated = 4, 
  }
}